import { login } from '../../api/user'

const userModule = {
  namespaced: true,
  state: {
    userInfo: null,
    token: null,
  },
  getters: {
    token: state => state.token,
  },
  mutations: {
    loginSuccess(state, payload) {
      state.userInfo = payload.userInfo
      state.token = payload.token
    },
    reset(state) {
      state.userInfo = null
      state.token = null
    },
  },
  actions: {
    /**
     * action 函数
     * @param {*} context 与 store 对象结构一致
     * @param {*} payload
     */
    loginAction(context, payload) {
      return login(payload)
        .then(data => {
          console.log('登录:', data)
          if (data.token) {
            // 登录成功，变更状态数据，在 action
            // 中不能直接修改 state 数据，而是需要
            // commit() 提交 mutation 来变更状态
            context.commit('loginSuccess', data)
            return Promise.resolve(true)
          }
          context.commit('reset')
          return Promise.resolve(false)
        })
        .catch(error => {
          console.error('异常:', error)
          context.commit('reset')
          return Promise.reject(error)
        })
    },
  },
}

export default userModule
